﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//void GetMemory(char* p)
//{
//	p = (char*)malloc(100);
//}
//void Test(void)
//{
//	char* str = NULL;
//	GetMemory(str);
//	strcpy(str, "hello world");
//	printf(str);
//}

//采用传址调用
//void GetMemory(char** p)
//{
//	*p = (char*)malloc(100);
//}
//void Test(void)
//{
//	char* str = NULL;
//	GetMemory(&str);
//	strcpy(str, "hello world");
//	printf(str);
//	free(str);
//}

//fanhui

//char* GetMemory(char* p)
//{
//	p = (char*)malloc(100);
//	return p;
//}
//void Test(void)
//{
//	char* str = NULL;
//	str=GetMemory(str);
//	strcpy(str, "hello world");
//	printf(str);
//	free(str);
//	str = NULL;
//}


//请问运⾏Test函数会有什么样的结果？
//p没有传回给str*//
//内存xielou//
//printf没问题


char* GetMemory(void)
{
	
	char p[] = "hello world";//这里函数结束，数组已经销毁啦！！！
	return p;
}
void Test(void)
{
	char* str = NULL;
	str = GetMemory();//str已经是野指针了 我没看出来哭哭哭；
	printf(str);
}

int main()
{
	Test();
	return 0;
}
